There are many types of representations of electronic integrated circuits, e.g. physical layout, schematic etc. One representation is a simulation model which is a representation of the behavioral of an electronic integrated circuit. In the area of Application Specific Integrated Circuits (ASIC), behavioral representations of electronic integrated circuits are stored in a model, which is adapted to be executed under a simulator, also software. Each of the basic building blocks in an ASIC electronic integrated circuit is termed a macro or a cell. In ASIC applications, macros or cells from a library or libraries are compiled or connected together to form the desired electronic integrated circuit.
Each macro or cell in the ASIC library has a plurality of nodes interconnecting a plurality of electronic logic circuit primitive elements. The logic circuit primitive elements can comprise elements such as NAND gates, OR gates, AND gates, NOR gates, or even flip flops. Further, in many ASIC libraries, the timing for each macro or cell is specified only between the inputs to the macro and the outputs from the macro.
The problem heretofore is that ASIC libraries developed by the developer of the library have been constrained to operate on one type of simulator. Heretofore, a user of the ASIC library must either go to the facility of the ASIC developer to use the one type of simulator or acquire the same one type of simulator in its own facilities and obtain rights to use the ASIC library from the ASIC developer. Alternatively, the ASIC library can be manually converted to operate from one simulator to another simulator.
As the price of digital computers decrease and their processing capabilities increase, the user becomes more desirous of having a digital computer or work station at the user's facility to use the ASIC library. In many instances, however, the user digital computer or user work station has a simulator executing thereon, which is different from the simulator under which the ASIC library would operate. Thus, the ASIC library developed by the ASIC library developer for use on one simulator must be converted to work on a second simulator. The conversion must take into account three factors which differentiate one simulator from another: language, primitives and timing.
Language is the text or commands by which an operator, using the particular simulator, commands the simulator to operate on the particular macro or cell from the ASIC library. Thus, to operate on a nand gate, one simulator may require the command "A nand B" whereas another simulator may require the command "--(A*B)". Included in language is syntax. Syntax is the grammatical rules of the language. One simulator may require the presence of a ";" as a delimiter and another simulator may require a different delimiter. These are merely simplistic examples of differences in language from the simulator developed by the provider of the ASIC library to the user's simulator.
Primitives are the basic logical element which are understood by a simulator. All simulators have a set of primitives which the simulators recognize. All of the members of a set of primitives which a first simulator recognizes or understands, may not be all of the same members which are recognized or understood by a second simulator. Thus, some simulators cannot understand an XOR gate. Others do not understand a MUX. In converting the ASIC library which is executable under the developer simulator, to that which is executable under the user simulator, there may be cells with logic elements which are not primitives of the user simulator and therefore would not be understood by the user simulator. In addition, there may be primitives on the user simulator better suited to the cell but not available on the developer simulator.
Finally in converting the ASIC library, timing must be considered. In the developer's simulator, timing is specified as the delays from the inputs to the macro to the outputs of the macro. However, in many of the user simulators, timing must be specified for each of the nodes or the primitives within each of the cells or macros. Thus, it is not sufficient to simply specify the timing delays from the inputs of the macro to the outputs of the macro. The conversion program must allocate the timing delays to each of the primitives that make up the cell in the library.